package com.zoshine.zzg.service;

import com.github.pagehelper.util.StringUtil;
import com.zoshine.zzg.dao.RoleDao;
import com.zoshine.zzg.exception.AppException;
import com.zoshine.zzg.exception.ErrorMessage;
import com.zoshine.zzg.pojo.Role;
import com.zoshine.zzg.util.idworker.IdWorker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;

/**
 * 角色ServiceImpl
 *
 * @author 田沛凌
 * @time 2017年6月22日 下午3:46:17
 */
@Service
@Transactional
public class RoleService extends BaseService<Role> {
    private IdWorker<Long> roleIdWorker;
    private RoleDao roleDao;

    @Autowired
    public void setRoleDao(RoleDao roleDao) {
        this.roleDao = roleDao;
    }

    @Autowired
    public void setRoleIdWorker(IdWorker<Long> roleIdWorker) {
        this.roleIdWorker = roleIdWorker;
    }

    //
//	@Override
//	public void delRole(Long roleId) {
//		if(roleId == null){
//			throw new AppException(ErrorMessage.ROLE_ID_CAN_NOT_NULL);
//		}
//		roleDao.delete(roleId);
//	}
//
    @Override
    public Role add(Role role) {
        if (StringUtil.isEmpty(role.getRoleName())) {
            throw new AppException(ErrorMessage.ROLE_NAME_CAN_NOT_NULL);
        }
        if (null == role.getOrgId()) {
            throw new AppException(ErrorMessage.ROLE_ORG_CAN_NOT_NULL);
        }
        if (null == role.getRoleStatus()) {
            throw new AppException(ErrorMessage.ROLE_STATUS_CAN_NOT_NULL);
        }
        //重复判断，同一组织下角色名不能重复
        Role check = roleDao.selectByRoleNameAndOrgId(role.getRoleName(), role.getOrgId());
        if (check != null) {
            throw new AppException(ErrorMessage.ROLE_CAN_NOT_REPEAT);
        }
        role.setId(roleIdWorker.createId());
        role.setCreateTime(new Date());
        role.setUpdateTime(new Date());
        roleDao.insert(role);
        return role;
    }
//
//	@Override
//	public Role getRole(Long roleId) {
//		if(roleId == null){
//			throw new AppException(ErrorMessage.ROLE_ID_CAN_NOT_NULL);
//		}
//		return roleDao.selectOne(roleId);
//	}
//
//	@Override
//	public void editRole(Role role) {
//		if(null == role.getRoleId()){
//			throw new AppException(ErrorMessage.ROLE_ID_CAN_NOT_NULL);
//		}
//		if(StringUtil.isEmpty(role.getRoleName())){
//			throw new AppException(ErrorMessage.ROLE_NAME_CAN_NOT_NULL);
//		}
//		if(null ==role.getOrgId()){
//			throw new AppException(ErrorMessage.ROLE_ORG_CAN_NOT_NULL);
//		}
//		if(null ==role.getRoleStatus()){
//			throw new AppException(ErrorMessage.ROLE_STATUS_CAN_NOT_NULL);
//		}
//
//		Role check = roleDao.selectByRoleNameAndOrgId(role.getRoleName(), role.getOrgId());
//		if (check != null && !Objects.equals(check.getRoleId(), role.getRoleId())) {
//			throw new AppException(ErrorMessage.ROLE_CAN_NOT_REPEAT);
//		}
//
//		role.setUpdateTime(new Date());
//		roleDao.update(role);
//	}
//	@Override
//	public List<Role> listRole(Role role) {
//		return roleDao.selectList(role);
//	}

}
